/*
 * Titulo: DAOEscuela.java
 * Autor: Oswaldo Ceballos Zavala (Inu)
 * Descripcion: Clase para el acceso a datos de resultados locales y nacionales.
 * 
 * Universidad Autonoma de Yucatan
 * 
 */

package DAO;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import modelo.Escuela;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * Clase DAOEscuela
 * 
 * @author Oswaldo.C
 */
public class DAOEscuela {
    
    
    //Archivo de excel resultados Yucatan
    private final File resultadosYuc = new File ("31RESUL_ESC_GRADO-ASIGNATURA.xls");
    
    private final String resultadosNac = "archivoNacional.txt";
    
    //Libro de excel resultados Yucatan
    private HSSFWorkbook workbookYuc;
    
    
    /**
     * 
     * 
     * @return Devuelve un ArrayList con la información de cada escuela en el 
     * archivo de excel de resultados locales, incluido el promedio general.
     * 
     * @throws IOException No se puede leer correctamente el archivo de excel
     */
    public ArrayList<Escuela> getEscuelasYuc() throws IOException{
        
        
       //Lista de escuelas en memoria interna 
       ArrayList<Escuela> escuelas = new ArrayList<Escuela>();  
 
       //Libro de excel de resultados Yucatan
       workbookYuc = new HSSFWorkbook (new FileInputStream( resultadosYuc  ));
       
       //Resultados de primaria Yucatan
       HSSFSheet hoja1 = workbookYuc.getSheetAt(0);
       
       //Para cada escuela se recuperan los atributos de interes y se agregan a la lista
       for (int i = 3; i < 1352; i++){
           
           String nombreEntidad = hoja1.getRow(i).getCell(1).toString();
           String claveEscuela = hoja1.getRow(i).getCell(2).toString();
           String nombreEscuela = hoja1.getRow(i).getCell(4).toString();
           
           // (promedio matematicas 3 + promedio espanol 3 + promedio historia 3 ) / 3
           double promedioTercero = Double.parseDouble(hoja1.getRow(i).getCell(10).toString());
           promedioTercero += Double.parseDouble(hoja1.getRow(i).getCell(11).toString());
           promedioTercero += Double.parseDouble(hoja1.getRow(i).getCell(12).toString());
           promedioTercero /= 3;
           
           // (promedio matematicas 4 + promedio espanol 4 + promedio historia 4 ) / 3
           double promedioCuarto = Double.parseDouble(hoja1.getRow(i).getCell(13).toString());
           promedioCuarto += Double.parseDouble(hoja1.getRow(i).getCell(14).toString());
           promedioCuarto += Double.parseDouble(hoja1.getRow(i).getCell(15).toString());
           promedioCuarto /= 3;
           
           // (promedio matematicas 5 + promedio espanol 5 + promedio historia 5 ) / 3
           double promedioQuinto = Double.parseDouble(hoja1.getRow(i).getCell(16).toString());
           promedioQuinto += Double.parseDouble(hoja1.getRow(i).getCell(17).toString());
           promedioQuinto += Double.parseDouble(hoja1.getRow(i).getCell(18).toString());
           promedioQuinto /= 3;
           
           // (promedio matematicas 6 + promedio espanol 6 + promedio historia 6 ) / 3
           double promedioSexto = Double.parseDouble(hoja1.getRow(i).getCell(19).toString());
           promedioQuinto += Double.parseDouble(hoja1.getRow(i).getCell(20).toString());
           promedioQuinto += Double.parseDouble(hoja1.getRow(i).getCell(21).toString());
           promedioQuinto /= 3;
           
           // Promedio general de la escuela
           double promedioGeneral = promedioTercero + promedioCuarto + promedioQuinto + promedioSexto ;
           promedioGeneral /= 4;
           
           
           //Agrega la escuela a la lista con un constructor sobrecargado
           
           Escuela e = new Escuela(  nombreEntidad, claveEscuela, nombreEscuela, promedioGeneral );
           escuelas.add(e);
       
       } //fin for
               
        return escuelas;
    }
    
    /**
     * 
     * 
     * @return Devuelve un ArrayList con la información de cada escuela en el 
     * archivo de resultados nacionales, incluido el promedio general.
     *
     * @throws FileNotFoundException No se encontro el archivo de resultados nacionales
     */
    public ArrayList<Escuela> getEscuelasNac() throws FileNotFoundException{
    
        ArrayList<Escuela> escuelas = new ArrayList<Escuela>();
        
        Scanner fileIn = new Scanner( new FileReader (resultadosNac) );
        
        
        while ( fileIn.hasNext() ){
            
            Escuela e = new Escuela();
            
            e.setEntidad( fileIn.next().replace( '\\' , ' ' ) );
            e.setClaveEscuela( fileIn.next());
            e.setNombreEscuela( fileIn.next().replace( '\\' , ' ' ) );
            e.setPromedioGeneral( Double.parseDouble( fileIn.next()));
            
            //System.out.println(e.getClaveEscuela());
            escuelas.add(e);
        }
        
        //for (int i = 0; i < 10; i++ ){
        //    System.out.println( escuelas.get(i).getClaveEscuela() + " " + escuelas.get(i).getNombreEscuela() + " " + escuelas.get(i).getPromedioGeneral()    );
        //}
        return escuelas;
    }
    
    
    
} //fin clase DAOEscuela
